#ifndef COMMON_XFILE_H_
#define COMMON_XFILE_H_

#include "Def.h"

#include <string>
#include <fstream>
using std::string;
using std::ofstream;
using std::ifstream;
using std::endl;
using std::ios;

bool file_copy(const char *src_file, const char *dst_dir){
    ifstream src;
	ofstream dst;

	if(!src_file || !dst_dir){
		return false;
	}

	string str(src_file);
	string dst_path(dst_dir);
	
	if(dst_path.size()>0){
		char end_tag = dst_path[dst_path.size()-1];
		if(end_tag != '\\' && end_tag != '/'){
			dst_path.append("\\");
		} 
	}
	int tag = max(str.find("\\"), str.find("/"));
	if(tag < 0){
		dst_path.append(src_file);
	} else {
		dst_path.append(str.substr(tag+1));
	}
	src.open(src_file, ios::in);
	if(!src.is_open()){
		return false;
	}

	dst.open(dst_path, ios::out);
	if(!dst.is_open()){
		return false;
	}

	const int buf_len = 512;
	char buf[buf_len + 1];
	while(src.good()){
		src.read(buf, buf_len);
		dst.write(buf, buf_len);
	}
	src.close();
	dst.close();
	return true;
}

#endif